<?php
/*
	+-----------------------------------------------------------------------------------------+
	| Projeto MonitoraSUS                                                                     |
	+-----------------------------------------------------------------------------------------+
	| Copyright (c) 2005-2008 Secretaria Municipal de Saúde de Belo Horizonte / Prodabel      |
	|                                                                                         |
	| Analista Responsável: Hugo Nathaniel Rodrigues <hugonr@gmail.com>, <hugo@pbh.gov.br> |  
	|                       Consultor - GSFS - Prodabel / SMSA                                |
	| Departamento Responsável - SMSA: GPLD - Paulinho <pauloces@pbh.gov.br>                  |
	| Departamento Responsável - Prodabel: GSFS - Ricardo Monteiro <monteiro@pbh.gov.br>      |
	| Analista de Informaçao: Marcone <marcone.costa@pbh.gov.br>                              |
	+-----------------------------------------------------------------------------------------+
*/

/**
* semaforo include para todas as páginas com grid do MonitoraSUS.
* funcão de visualização semáforo para medir realização de cada módulo
* 
*
* @author Hugo Nathaniel Rodrigues <hugonr@gmail.com> <hugo@pbh.gov.br>
* @version $Id: inc.semanforo.php,v 1.0 06/08/2008 15:16:00 Hugo $
*
* @package MonitoraSUS
*/

/**
* semaforo - visualização do semaforo
*
* @param str $dtultfim
* @param str $dataprevfim
* @param int $num_operacao
*/
function semaforo($num_operacao) {
   	$semaforo = "semaforo_verde";
	$sql2 = "select * from monitorasus.parametros";
	$resultado2 = pg_query( $sql2);
	$qtverde = pg_fetch_result($resultado2,0,"semaforo");
	$qtamarelo = 100;
	
	$dataprevfim = "";
    $sql2 = "select to_char(ap.data_prazo,'DD/MM/YYYY') as dt_prev_fina from " . $_SESSION["banco"] . ".acao_prazos ap, " . $_SESSION["banco"] . ".acoes a where a.situacao='A' and ap.situacao='A' and a.num_acao = ap.num_acao and a.num_operacao = " . $num_operacao . " order by ap.data_prazo desc limit 1";
    $resultado2 = pg_query( $sql2);
	while ($rs2 = pg_fetch_array($resultado2)){
		$dataprevfim = $rs2["dt_prev_fina"];
	}

	$dtultfim = "";
    $sql2 = "select to_char(ap.data_prazo,'DD/MM/YYYY') as dt_real_fina from " . $_SESSION["banco"] . ".acao_prazos ap, " . $_SESSION["banco"] . ".acoes a where a.situacao='A' and ap.situacao='A' and a.num_acao = ap.num_acao and a.num_operacao = " . $num_operacao . " and ap.num_tipo_prazo = 3 order by ap.data_prazo desc limit 1";

    $resultado2 = pg_query( $sql2);
	while ($rs2 = pg_fetch_array($resultado2)){
    	$dtultfim = $rs2["dt_real_fina"];
	}
	
	if ($dtultfim != ""){
    	$dia_inicio = explode("/", $dtultfim);
    } else {
		$dia_inicio = explode("/", $datainicio);
	}

    $dia_fim = explode("/", $dataprevfim);
	if ($dia_inicio[1] != ""){
    	$dia_inicial = mktime(0,0,0,$dia_inicio[1], $dia_inicio[0], $dia_inicio[2]);
	}
    if ($dia_fim[1] != ""){
    	$dia_final = mktime(0,0,0,$dia_fim[1], $dia_fim[0], $dia_fim[2]);
	}
	
	if ((trim($dia_final)=="") && (trim($dia_inicial)=="")){
	   	$semaforo = "semaforo_verde";
	} else {
		$tempo_unix = $dia_final - $dia_inicial; 
		$periodototal = floor($tempo_unix /(24*60*60));
		$hoje_fim = explode("/", date("d/m/Y"));
		$hoje_final = mktime(0,0,0, $hoje_fim[1], $hoje_fim[0], $hoje_fim[2]);
		$tempo_unix = $hoje_final - $dia_inicial;
		$periodohoje = floor($tempo_unix / (24*60*60));
		$totalcalculo = 0;
		if ($periodototal != 0){
			$totalcalculo = ($periodohoje / $periodototal) * 100;
		} else {
			$totalcalculo = 0;
		}
		if ($periodototal <= 0){
			// ultima etapa finalizada > previsão final.
			$semaforo = "semaforo_vermelho";
		} else {
			if (($totalcalculo > $qtamarelo)){
				$semaforo = "semaforo_vermelho";
			}
			if (($totalcalculo > $qtverde) && ($totalcalculo <= $qtamarelo)){
				$semaforo = "semaforo_amarelo";
			}
			if (($totalcalculo > 0) && ($totalcalculo <= $qtverde)){
				$semaforo = "semaforo_verde";
			}
		}
	}
    $sql2 = "select distinct a.num_acao, a.peso from " . $_SESSION["banco"] . ".acao_prazos ap, " . $_SESSION["banco"] . ".acoes a where a.situacao='A' and ap.situacao='A' and a.num_acao = ap.num_acao and a.num_operacao = " . $num_operacao . " and ap.num_tipo_prazo = 3";
	$resultado2 = pg_query( $sql2);
    $pesototal = 0;
    while ($rs2 = pg_fetch_array($resultado2)){
    	$pesototal = $pesototal + $rs2["peso"];
	}
    if ($pesototal == 100){
    	// Não atualizou a data real final mas já terminou o serviço.
		$semaforo = "semaforo_verde";
    }
	echo "<img src=\"./telas/images/$semaforo.gif\" border=\"0\" alt=\"$totalcalculo\">";
}
?>